#region Using

using XNgine.Misc;
using XNgine.ScreenManagement;
using XNgine.ScreenManagement.StandardScreens;

#endregion

namespace XNgine.Services
{
    public interface IScreenManagement : IService
    {
        #region Screens Collection

        /// <summary>
        /// The collection of the screens that this class is managing
        /// </summary>
        NamedItemCollection<IGameScreen> Screens { get; }

        #endregion
        
        #region Properties

        /// <summary>
        /// Gets or sets the active screen
        /// </summary>
        IGameScreen ActiveScreen { get; set; }

        #endregion
        
        #region Core Functionality Methods
        
        void CloseScreen(IGameScreen screen);
        void CloseAllScreens(bool unload);

        void Show(string name);
        void Show(IGameScreen screen);

        MessageBox ShowMessageBox(string msg); 

        #endregion
    }
}